package dahuiji.common.core;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import dahuiji.common.dao.BaceDao;
import dahuiji.common.entity.Line;
import dahuiji.common.entity.LineRecord;
import dahuiji.common.sysdata.CommonData;
import dahuiji.common.util.Constants;

/**
 * 从内存中得到所有的航线，如果数据有更新（新的航线，或者航线时间过时），维护
 * 
 * @author Administrator
 * 
 */
public class LineData {
	private CommonData commonData;// 内存中的数据
	private BaceDao baceDao=new BaceDao();
	private DateCaozuo dateCaozuo=new DateCaozuo();

	/**
	 * 从内存中得到所有航线
	 * 
	 * @return
	 */
	public List<Line> getAllLine() {
		Map<Long, Line> mapLine = CommonData.allLine;
		List<Line> list = new ArrayList<Line>();
		Iterator<Entry<Long, Line>> iter = mapLine.entrySet().iterator();
		Entry<Long, Line> entry;
		while (iter.hasNext()) {
			entry = iter.next();
			list.add(entry.getValue());
		}
		return list;
	}

	/**
	 * 根据id得到记录
	 * 
	 * @param id
	 * @return
	 */
	public List<LineRecord> getLineRecordsById(Long id) {
		return CommonData.allLineRecord.get(id);// 根据id从内存里拿记录
	}

	/**
	 * 因为line已经失效从内存中删除，然后更新数据库
	 * 
	 * @return
	 */
	public boolean delLine(Line line) {
		// 从内存中移除
		line.setStatus(Constants.LINE_RIGHT_NO);
		commonData.allLine.remove(line.getId());// 从内存中删除
		baceDao.saveOrUpdate(line);
		return true;
	}

	/**
	 * 第一次发送通知，更新数据库表
	 * 
	 * @param line
	 */
	public void updateLine(Line line, int pr) {
		line.setFlag(Constants.LINE_SEND_NOTICE_YES);
		baceDao.saveOrUpdate(line);
		LineRecord lrLineRecord = new LineRecord();
		lrLineRecord.setLindId(line.getId());
		dateCaozuo = new DateCaozuo();
		lrLineRecord.setDate(dateCaozuo.getNowDate());
		lrLineRecord.setPrice((short) pr);
		baceDao.save(lrLineRecord);

	}
	/**
	 * 更新
	 * @param line
	 */
	public void updateLine(Line line) {
		line.setFlag(Constants.LINE_SEND_NOTICE_YES);
		baceDao.saveOrUpdate(line);
	}

	public void addLineR(LineRecord lRecord) {
		baceDao.saveOrUpdate(lRecord);
	}
}
